From: Richard M. Stallman Date: Sat, 23 Apr 1994 04:09:17 +0000 (+0000) Subject: (x_window): Test FRAME_EXTERNAL_MENU_BAR X-Git-Tag: archive/raspbian/1%29.2+1-2+rpi1^2~5^2~92022 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/www.github.com/%22bookmarks:///%22http:/www.example.com/cgi/%22https:/www.github.com/%22bookmarks:/?a=commitdiff_plain;h=5e65b9ab235b54c005ba058fc800dcdc5bd8cc68;p=emacs.git (x_window): Test FRAME_EXTERNAL_MENU_BAR to decide on calling initialize_frame_menubar. (x_top_window_to_frame): New function. --- diff --git a/src/xfns.c b/src/xfns.c index 898f86c3119..cb6255bdd29 100644 --- a/src/xfns.c +++ b/src/xfns.c @@ -315,6 +315,38 @@ x_any_window_to_frame (wdesc) } return 0; } + +/* Return the frame whose principal (outermost) window is WDESC. + If WDESC is some other (smaller) window, we return 0. */ + +struct frame * +x_top_window_to_frame (wdesc) + int wdesc; +{ + Lisp_Object tail, frame; + struct frame *f; + struct x_display *x; + + for (tail = Vframe_list; XGCTYPE (tail) == Lisp_Cons; + tail = XCONS (tail)->cdr) + { + frame = XCONS (tail)->car; + if (XGCTYPE (frame) != Lisp_Frame) + continue; + f = XFRAME (frame); + if (f->display.nothing == 1) + return 0; + x = f->display.x; + /* This frame matches if the window is its topmost widget. */ + if (wdesc == XtWindow (x->widget)) + return f; + /* Match if the window is this frame's menubar. */ + if (x->menubar_widget + && wdesc == XtWindow (x->menubar_widget)) + return f; + } + return 0; +} #endif /* USE_X_TOOLKIT */ @@ -1768,12 +1800,11 @@ x_window (f, window_prompting, minibuffer_only) f->display.x->column_widget = pane_widget; - if (!minibuffer_only && FRAME_MENU_BAR_LINES (f) > 0) + if (!minibuffer_only && FRAME_EXTERNAL_MENU_BAR (f)) initialize_frame_menubar (f); /* mappedWhenManaged to false tells to the paned window to not map/unmap - * the emacs screen when changing menubar. This reduces flickering a lot. - */ + the emacs screen when changing menubar. This reduces flickering. */ ac = 0; XtSetArg (al[ac], XtNmappedWhenManaged, 0); ac++;